
def hold_retrieve_mon_1():
  """HF1. DN1 call to DN3, DN3 cinit DN2, DN2 answer, rel. DN3, DN3 retrieve, rel. DN1"""
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(DN2)
  DN2.AnswerCall()
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_2():
  """HF2. Inbound call to DN3, DN3 cinit DN2, DN2 answer, rel. DN3, DN3 retrieve, rel.Ext1Dn"""
  Ext1DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(DN2)
  DN2.AnswerCall()
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  Ext1DN1.ReleaseCall()

def hold_retrieve_mon_3():
  """HF3  Outbound call DN3 to Ext1DN, DN3 cinit DN1, DN2 answer, rel. DN3, DN3 retrieve, rel.Ext1Dn"""
  DN3.MakeCall(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN3.InitiateConference(DN1)
  DN1.AnswerCall()
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  Ext1DN2.ReleaseCall()

def hold_retrieve_mon_4():
  """HF4. DN1 call to DN3, DN3 cinit Ext1DN , Ext1DN answer, rel. DN3, DN3 retrieve, rel. DN1"""
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_5():
  """HF5. Inbound call to DN3, DN3 cinit Ext1DN, Ext1DN answer, rel. DN3, DN3 retrieve, rel.Ext1Dn"""
  Ext1DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  Ext1DN1.ReleaseCall()

def hold_retrieve_mon_6():
  """HF6. DN1 call to DN3, DN3 cinit DN2 (no answer), DN3 retrieve, rel. DN1"""
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(DN2)
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_7():
  """HF7. Inbound call to DN3,  DN3 cinit DN2 (no answer), rel DN3, DN3 retrieve, rel.Ext1Dn"""
  Ext1DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(DN2)
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  Ext1DN1.ReleaseCall()

def hold_retrieve_mon_8():
  """HF8. Outbound call DN3 to Ext1DN, DN3 cinit DN1 (no answer),rel DN3, DN3 retrieve, rel.Ext1Dn"""
  DN3.MakeCall(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN3.InitiateConference(DN1)
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  Ext1DN2.ReleaseCall()

def hold_retrieve_mon_9():
  """HF9. DN1 call to DN3, DN3 cinit Ext1DN (no answer),rel DN3, DN3 retrieve, rel. DN1"""
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(Ext1DN2)
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_10():
  """HF10. Inbound call to DN3,DN3 cinit Ext1DN (no answer),rel DN3, DN3 retrieve, rel.Ext1Dn"""
  Ext1DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.InitiateConference(Ext1DN2)
  DN3.ReleaseCall()
  DN3.RetrieveCall()
  Ext1DN1.ReleaseCall()


def hold_retrieve_mon_15():
  """H1. DN1 call to DN3, DN3 ans, DN3 hold, DN3 retrieve, rel. DN3"""
  DN1.MakeCall(DN3)
  DN3.AnswerCall()
  DN3.HoldCall()
  DN3.RetrieveCall()
  DN3.ReleaseCall()

def hold_retrieve_mon_16():
  """H3. DN1 call to DN3, DN1 hold, DN3 retrieve, rel. DN1"""
  DN1.MakeCall(DN3)
  DN1.HoldCall()
  DN1.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_17():
  """H5. DN1 call to DN3, DN1 hold, DN1 retr, DN3 ans, DN3 hold, DN3 retrieve, rel. DN1"""
  DN1.MakeCall(DN3)
  DN1.HoldCall()
  DN1.RetrieveCall()
  DN3.AnswerCall()
  DN3.HoldCall()
  DN3.RetrieveCall()
  DN1.ReleaseCall()


  

def hold_retrieve_mon_n_1():
  """ DN1 call to DN2,  DN2 hold, DN2 retrieve, rel. DN1"""
  DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN2.HoldCall()
  DN2.RetrieveCall()
  DN1.ReleaseCall()

def hold_retrieve_mon_n_2():
  """ Inbound call to DN2,  DN2 hold, DN2 retrieve, rel.Ext1Dn"""
  Ext1DN1.MakeCall(DN2)
  DN2.AnswerCall()
  DN2.HoldCall()
  DN2.RetrieveCall()
  Ext1DN1.ReleaseCall()

def hold_retrieve_mon_n_3():
  """ Outbound call DN2 to Ext1DN,  DN2 hold, DN2 retrieve, rel.Ext1Dn"""
  DN2.MakeCall(Ext1DN2)
  Ext1DN2.AnswerCall()
  DN2.HoldCall()
  DN2.RetrieveCall()
  Ext1DN2.ReleaseCall()

  
